diff options
Diffstat (limited to '_Programming_With_C/chapter14.ipynb')
-rw-r--r-- | _Programming_With_C/chapter14.ipynb | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/_Programming_With_C/chapter14.ipynb b/_Programming_With_C/chapter14.ipynb new file mode 100644 index 00000000..325040e9 --- /dev/null +++ b/_Programming_With_C/chapter14.ipynb @@ -0,0 +1,235 @@ +{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h1>Chapter 14: Low-Level Programming<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 14.14, Page number: 14.12<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# illustrates the use of right shift operator\n",
+ "\n",
+ "a=0xf05a\n",
+ "\n",
+ "print \"%u\" %(a)\n",
+ "print \"%x\" %(a>>6)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "61530\n",
+ "3c1\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 14.16, Page number: 14.13<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# displaying bit patterns\n",
+ "\n",
+ "\n",
+ "a=1\n",
+ "nbits=16\n",
+ "m=0x1<<(nbits-1)\n",
+ "\n",
+ "def main(a):\n",
+ " mask=abs(m)\n",
+ " for count in range(1,nbits+1):\n",
+ " if a&mask:\n",
+ " b=1\n",
+ " else:\n",
+ " b=0\n",
+ "\n",
+ " print \"%x\" %(b),\n",
+ " if count%4==0:\n",
+ " print \"\\t\",\n",
+ "\n",
+ " mask>>=1\n",
+ " return\n",
+ "print \"\\n1-->\\n\"\n",
+ "main(1)\n",
+ "print \"\\n-1-->\\n\"\n",
+ "main(-1)\n",
+ "print \"\\n0-->\\n\"\n",
+ "main(0)\n",
+ "print \"\\n2-->\\n\"\n",
+ "main(2)\n",
+ "print \"\\n-2-->\\n\"\n",
+ "main(-2)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "1-->\n",
+ "\n",
+ "0 0 0 0 \t0 0 0 0 \t0 0 0 0 \t0 0 0 1 \t\n",
+ "-1-->\n",
+ "\n",
+ "1 1 1 1 \t1 1 1 1 \t1 1 1 1 \t1 1 1 1 \t\n",
+ "0-->\n",
+ "\n",
+ "0 0 0 0 \t0 0 0 0 \t0 0 0 0 \t0 0 0 0 \t\n",
+ "2-->\n",
+ "\n",
+ "0 0 0 0 \t0 0 0 0 \t0 0 0 0 \t0 0 1 0 \t\n",
+ "-2-->\n",
+ "\n",
+ "1 1 1 1 \t1 1 1 1 \t1 1 1 1 \t1 1 1 0 \t"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 14.23, Page Number: 14.20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Storing Names and Birthdays\n",
+ "\n",
+ "from ctypes import *\n",
+ "\n",
+ "string=c_char*50\n",
+ "\n",
+ "\n",
+ "def convert(mm,dd,yy):\n",
+ " yy-=1900\n",
+ " ndays=long(30.42*(mm-1)+dd)\n",
+ " if mm==2:\n",
+ " ndays+=1\n",
+ " if mm>2 and mm<8:\n",
+ " ndays-=1\n",
+ " if yy%4==0 and mm<2:\n",
+ " ndays+=1\n",
+ "\n",
+ " ncycles=yy/4\n",
+ " ndays+=ncycles*1461\n",
+ "\n",
+ " nyears=yy%4\n",
+ " if nyears>0:\n",
+ " ndays+=365*nyears+1\n",
+ " if ndays>59:\n",
+ " ndays-=1\n",
+ "\n",
+ " day=ndays%7\n",
+ " yy+=1900\n",
+ " if yy%4==0 and yy%400!=0:\n",
+ " day+=1\n",
+ " return day\n",
+ "\n",
+ "\n",
+ "class date(Structure):\n",
+ "\t_fields_=[('month',c_int),('day',c_int),('year',c_int)]\n",
+ "\t\n",
+ "\n",
+ "class person(Structure):\n",
+ "\t_fields_=[('name',string),('birthdate',date)]\n",
+ "\t\t\n",
+ "student=[]\n",
+ "\n",
+ "weekday=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']\n",
+ "\n",
+ "month=['January','February','March','April','May','June','July','August',\\\n",
+ " 'September','October','November','December']\n",
+ "\n",
+ "\n",
+ "name='Rob Smith'\n",
+ "birthdate=date(7,20,1972)\n",
+ "student.append(person(name,birthdate))\n",
+ "\n",
+ "name='Judy Thompson'\n",
+ "birthdate=date(11,27,1983)\n",
+ "student.append(person(name,birthdate))\n",
+ "\n",
+ "name='Jim Williams'\n",
+ "birthdate=date(12,29,1998)\n",
+ "student.append(person(name,birthdate))\n",
+ "\n",
+ "name='Mort Davis'\n",
+ "birthdate=date(6,10,2010)\n",
+ "student.append(person(name,birthdate))\n",
+ "\n",
+ "\n",
+ "\t\n",
+ "for count in xrange(0,4):\n",
+ " day_of_week=convert(student[count].birthdate.month,student[count].birthdate.day,student[count].birthdate.year)\n",
+ " print student[count].name,\n",
+ " print \" %s, %s %d %d \\n\" %(weekday[day_of_week],month[student[count].birthdate.month-1],student[count].birthdate.day,student[count].birthdate.year)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rob Smith Thursday, July 20 1972 \n",
+ "\n",
+ "Judy Thompson Sunday, November 27 1983 \n",
+ "\n",
+ "Jim Williams Tuesday, December 29 1998 \n",
+ "\n",
+ "Mort Davis Thursday, June 10 2010 \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": []
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file |