unsigned

【Keil5 C51】调用C51的库函数_crol_做流水灯实验

北城余情 提交于 2020-02-08 20:22:46
_crol_ 函数的介绍 Cx51 User’s Guide Summary # include <intrins.h> unsigned char _crol_ ( unsigned char c , /* character to rotate left */ unsigned char b ) ; /* bit positions to rotate */ Description The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrinsic function (从c变量中的b开始位 一次向左移动, 比如b = 1 时这串数字会这样移动:1111110–>11111101) Return Value The crol routine returns the rotated value of c.(把移动之后的值返回给c) Example # include <intrins.h> void test_crol ( void ) { char a ; char b ; a = 0xA5 ; b = _crol_ ( a , 3 ) ; /* b now is 0x2D */ } 流水灯代码

循环右移的实现小例子

好久不见. 提交于 2020-02-08 18:02:28
# include <stdio.h> struct bit { unsigned a : 8 ; unsigned b : 8 ; unsigned c : 8 ; } bite ; int main ( ) { printf ( "请输入需要右移的位数:" ) ; int n ; unsigned char a ; scanf ( "%d" , & n ) ; printf ( "请输入需要右移的数字:" ) ; scanf ( "%hhd" , & a ) ; bite . a = a ; printf ( "bite.a:%d\n" , bite . a ) ; bite . b = bite . a ; bite . a = bite . a >> n ; printf ( "a:%d\n" , bite . a ) ; bite . b = bite . b << ( 8 - n ) ; printf ( "b:%d\n" , bite . b ) ; bite . c = bite . b | bite . a ; printf ( "c:%d\n" , bite . c ) ; return 0 ; } 来源: CSDN 作者: handsome boy! 链接: https://blog.csdn.net/qq_42861208/article/details

第一次开始尝试写,当记录自己的学习状态吧(学习驱动之史)

南楼画角 提交于 2020-02-07 09:46:31
#gec6818开发板之跑马灯 #今年寒假异常难过,不如我们一起来学习吧!这两天开始重新学习,突然感觉敲代码的日子可真美好,人都快憋坏咯 学习驱动的第一个关键,你得先知道开发板的启动过程,对于嵌入式Linux操作系统来说,先上电,然后进入到uboot中,加载Linux内核后,挂载根文件系统,最后才开始会执行自启动应用程序。 今天学的是如何让6818上的LED闪亮起来,在学过51单片机的基础上,对引脚之类的概念还是有些帮助的,但此次代码中却有了一个较大的区别,之前我们每次接触的C文件都会有一个头文件,以保证能成功调用各种库函数,但今天的学习内容我们用的是寄存器,来完成我们的任务,所以代码中没有任何头文件的出现。 怎么办呢,一个小白不知道接下来该怎么写了,直接码起来算了: //跑马灯 //1.定义寄存器 //D7->GPIOE13 #define GPIOEOUT (*(volatile unsigned int *)0xC001E000) #define GPIOEOUTENB (*(volatile unsigned int *)0xC001E004) #define GPIOEALTFN0 (*(volatile unsigned int *)0xC001E020) #define GPIOEALTFN1 (*(volatile unsigned int *)0xC001E024

Linux OpenGL 实践篇-16 文本绘制

穿精又带淫゛_ 提交于 2020-02-07 04:19:30
文本绘制   本文主要射击Freetype的入门理解和在OpenGL中实现文字的渲染。 freetype   freetype的官网,本文大部分内容参考 https://www.freetype.org/freetype2/docs/tutorial/step1.html#section-2 library   FreeType中的library其类型是FT_Library,定义如下: typedef struct FT_LibraryRec_ *FT_Library;   所以可以简单的理解为一个FT_LibraryRec_的对象,虽然FreeType用c写的,但这个地方不妨碍我们使用对象来理解它。因为_LibraryRec_我并没有看到源代码,具体包含哪些内容我并不清楚。但根据其用法,可以推测其应该是一些字体上下文的内容,比如缓存、内存管理等。 FT_Error = FT_Init_Freetype(&library); face   一个face可以理解为字体的描述或者说字形的集合,比如“Times New Roman Regular"表示正常的新罗马字体,而"Times New Roman Italic"表示新罗马字体的斜体表示。一个字体文件中可以嵌入多个face,我们可以通过下面的API加载特定的face:    FT_Error FT_New_Face(FT

Redis源码剖析 字典 结构 ( dict.h/dict.c)

≯℡__Kan透↙ 提交于 2020-02-04 20:09:29
字典又称为符号表、关联数组 、或者映射。是一种用于保存键值对(key-value)的抽象结构数组。 例如:Redis中所有key到value的映射,就是通过字典结构维护,还有hash类型的键值。 1、Redis中字典的实现 Redis的字典是由哈希表实现的,一个哈希表有多个节点,每个节点保存一个键值对。 1.1哈希表(dict.c/dict.h) typedef struct dictht{ dictEntry** table;//存放一个数组的地址,数组中存放哈希节点dictEntry的地址 unsingned long size;//哈希表table的大小,出始大小为4 unsingned long sizemask;//用于将hash值映射到table位置的索引,大小为(size-1) unsingned long used;//记录哈希表已有节点(键值对)的数量 }dictht; 1.2哈希表节点 typedef struct dictEntry{ void *key; //key union{ void* val; uint64_t u64; int64_t s64; double d; }v; //val struct dictEntry *next; //指向下一个节点,用来解决 哈希冲突 }dictEntry; 1.3字典 typedef struct dict{

【C语言】编写函数unsigned int reverse_bit(unsigned int value)(位运算)

瘦欲@ 提交于 2020-02-02 18:53:38
编写函数 : unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000 00000000 00000000 00011001 翻转后: (2550136832) 10011000 00000000 00000000 00000000 程序结果返回: 2550136832 方法一: 【思想】 : 先找翻转的规律 (左边高位)00000000 00000000 00000000 00011001(右边低位) 第1位 1->32 —> 十进制2^31 (第1位翻转之后要放到32位上) 第2位 2->31 —> 十进制2^30 (第2位翻转之后要放到31位上) 第i位: i -> 32 - i + 1 —> 十进制2^(32-i) 逆置: 累加每一位逆置之后的十进制数 sum += 每一位二进制值 * 2^(32-i) 从i=1开始 取每一位的二进制值: (n >> i - 1)& 1 所以 unsigned int reverse_bit ( unsigned int val ) { unsigned int sum = 0 ; for ( int i = 1 ; i <= 32 ; i ++ ) { /

leetcode405

孤街浪徒 提交于 2020-02-02 05:48:23
static的用处 1). 在函数体,一个被声明为静态的变量在这一 函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个 本地的全局变量 。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这 个函数被限制在声明它的模块的本地范围内使用 。 unsigned的用处 1、signed是默认的,表示这个变量是有符号的,可以 存储整数和负数 。 2、 unsigned则需要显示给出表示这个变量,没有符号值能存储数的大小,而且不能表示正负 。 3、signed存储符号是有代价的,代价就是存储空间中的一个比特位专门用来存储符号,这一位不能表示数值。一般来说,同类型的signed能够存储的数的绝对值大小要小于undigned。 4、unsigned的作用就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。 5、signed在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果 需声明无符号类型的话就需要在类型前加上unsigned 。 memset的用处 void *memset(void *s, int ch, size_t n); 函数解释

Python学习:array模块

南楼画角 提交于 2020-02-01 08:55:43
简介 array模块定义了一种对象类型,该对象类型很类似于列表,但是对象中存储的数据类型是确定的,比如字符型、整数型、浮点型等,在array对象创建时,array对象中存储的数据类型需通过一个type code确定,在Python中,array支持的type code如下: Type Code C Type Python Type Min size in Bytes ‘b’ signed char int 1 ‘B’ unsigned char int 1 ‘u’ Py_Unicode unicode character 2 ‘h’ signed short int 2 ‘H’ unsigned short int 2 ‘i’ signed int int 2 ‘I’(大写的i) unsigned int int 2 ‘l’(小写的L) signed long int 4 ‘L’ unsigned long int 4 ‘q’ signed long long int 8 ‘Q’ unsigned long long int 8 ‘f’ float float 4 ‘d’ double float 8 类与方法属性 class array.array(typecode [, initializer]) 创建一个array对象,限制了array中的数据类型为typecode类型

【翻译】JNA调用DLL

冷暖自知 提交于 2020-01-31 22:24:32
一、前言   Jna调用的示范,基本包括了Java->C基本类型的转换,指针的转换等。    不过文章是2011年的,可能后面要查看下有什么改变。 二、原文 http://www.viaboxxsystems.de/java-interoperation-with-a-native-dll-using-jna 推荐实例阅读: http://www.eshayne.com/jnaex/index.html 三、翻译 大体翻译。 从Java调用dll,你可以选择JNI和JNA。(还有其他了.......) 关于调用转换 首先定义接口,接口继承“ “com.sun.jna.Library” 或者 “com.sun.jna.win32.StdCallLibrary”. ”。   View Code   Java中调用如下:    View Code       基本数据转换   上述方法中,“returnDllVersion”方法返回一个char *(C语言),JNA框架将char *转换为Java String(Unicode)。JNA提供了大部分的JAVA/C数据类型的转换,可参见 “ Mapping between Java and Native “. 注:此段后为自己加的内容,可能有误。   由于我在数据转换时涉及到了很多unsigned,signed的问题,之前基础也不好

C++ reinterpret_cast

≡放荡痞女 提交于 2020-01-31 04:32:29
C++ reinterpret_cast reinterpret_cast 參考連結 reinterpret_cast reinterpret_cast 用於將某種類型的指標強行轉換為另一種類型的指標。因為它不會做類型檢查,所以與 static_cast 比起來,它是較為危險的。 在 TensorRT/blob/master/samples/common/common.h 的函數 readPGMFile 中: inline void readPGMFile ( const std :: string & fileName , uint8_t * buffer , int inH , int inW ) { //... infile . read ( reinterpret_cast < char * > ( buffer ) , inH * inW ) ; } 將 uint8_t* 型別的指標強行轉為 char* 型別的指標。 其中的 uint8_t 是一個在C99標準中,使用 typedef 定義於 stdint.h 的型別: typedef unsigned char uint8_t ; typedef unsigned short uint16_t ; typedef unsigned long uint32_t ; typedef unsigned long long