位运算和排序

原码、反码、补码:
原码:符号位加上真值的绝对值, 用第一位表示符号,0为正,1为负, 其余位表示值。
正数的原码、反码、补码都相同。
负数的反码:原码的符号位不变其余位取反, 补码:反码加1。
位运算符:
&:按位与 ,都为1时为1,有一个0就为0
|:按位或,有1为1,全0为0
~:按位非,按位取反
^:按位异或,相同为0,不同为1
<<:左移,左移n位就是乘以2的n次方,高位丢弃,低位补0。
>>:右移,右移n位就是除以2的n次方,低位丢弃,高位补0
注意:用位运算符进行运算时先转成二进制,再以补码运算,最后再把补码返回原码。
位运算举例:
输入一个字节内的数(0-255),然后将该数转换为二进制数,然后将高四位和第四位互换
100。 二进制原码是 0110 0100补码是0110 0100
第一步:100<<4 移之前0110 0100
移之后0100 0000
第二步:100>>4 移之前0110 0100
移之后0000 0110
0100 0000
0000 0110|
0100 0110
冒泡、选择、插入排序:
冒泡排序:
思想:相邻的两个数依次进行比较,如果前者大,则互换位置,一趟下来之后,最大值就放在了最后一位,开始第二趟,依次比较相邻的2个数,如果前者大,交换,以此类推,如果对n个数排序,n-1趟能排出结果。
选择排序:
思想:假定本趟待排元素的第一个是最小值,记录这个值以及值的位置,拿这个记录的值,依次与第2~n的数进行比较,一旦发现有比记录的值小的数更新记录的值以及位置,继续往后比,直到最后一个元素,然后与第一个元素交换。
插入排序:
思想:把一个待排元素与有序元素从后往前依次比较,如果待排元素小于某有序元素,二者交换,再与更小的元素比较,如果大于更小的元素或者已经交换到最小位置,结束本趟比较,开启下一趟比较,比较方式同上。

猜你喜欢

转载自blog.csdn.net/csdn_hmt/article/details/88411178